// packagBuy/pages/marketing/collectcoupons/collectcoupons.js
var util = require('../../../../utils/util')   //引入配置公共请求接口
import { couponApi } from '../../../../config/config'
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    footprintGuid: '', //足迹全局id
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    titleHead:0,
    menuHeight:0,
    menuTop:0,
    statusBarHeight: app.globalData.statusHeight,
    fixedMenu:false,// 是否固顶分类
    listData: [],
    page: 1,
    rows: 8,
    nomoreData: false,
    typeId: 0,
    typeData:[{id:0,name:'为您精选'}],
    demoData:[
      {
        id:11,
        type:1,
        couponType: 2,// 1 全品， 2 限品，3 送装， 4 定金券
        discountType:1, // 1 打折， 0 满减 
        receiveStatus:0, // 领取状态：0 未领取， 1 已领取，2 继续领取， 3 已抢光
      },
      {
        id:1,
        type:1,
        couponType: 1,// 1 全品， 2 限品，3 送装， 4 定金券
        discountType:0, // 1 打折， 0 满减 
        receiveStatus:0, // 领取状态：0 未领取， 1 已领取，2 继续领取， 3 已抢光
      },
      {
        id: 2,
        type:2,
        couponType: 2,// 1 全品， 2 限品，3 送装， 4 定金券
        discountType:1, //1 打折， 0 满减 
        receiveStatus:1, // 领取状态：0 未领取， 1 已领取，2 继续领取， 3 已抢光
      },
      {
        id: 3,
        type:2,
        couponType: 3,// 1 全品， 2 限品，3 送装， 4 定金券
        discountType: 1, //1 打折， 0 满减 
        receiveStatus:2, // 领取状态：0 未领取， 1 已领取，2 继续领取， 3 已抢光
      },
      {
        id: 4,
        type:3,
        couponType: 4,// 1 全品， 2 限品，3 送装， 4 定金券
        discountType: 1, //1 打折， 0 满减 
        receiveStatus:3, // 领取状态：0 未领取， 1 已领取，2 继续领取， 3 已抢光
      },
    ],
    userTypeDlg: false // 验证信息弹框
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getTopHeight()
    this.getCouponTypeList()
    this.getListData()
  },
  
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.setData({
      footprintGuid: util.guid()
    })
    //保存访问足迹
    app.saveAccessFootprint(this.data.footprintGuid, 'couponCenter', null)
    this.getCouponTypeList()
    this.getListData()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    //保存退出足迹
    app.saveQuitFootprint(this.data.footprintGuid)
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    //保存退出足迹
    app.saveQuitFootprint(this.data.footprintGuid)
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      page: 1,
      nomoreData:false
    })
    this.getListData()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if (!this.data.nomoreData) {
      this.setData({
        page: this.data.page + 1
      })
      this.getListData()
    }
  },

  /**
   * 用户点击右上角分享
   */
  // onShareAppMessage: function () {

  // },
  getTopHeight(){
    const query = wx.createSelectorQuery()
    query.select('#collHead').boundingClientRect()
    query.exec((res)=>{
      this.setData({
        titleHead:res[0].height || 0
      })
    })
    const menu = wx.createSelectorQuery()
    menu.select('#menuHead').boundingClientRect()
    menu.exec((res)=>{
      this.setData({
        menuHeight:res[0].height || 0,
        menuTop:res[0].top || 0
      })
    })
  },
  // 监听滚动，固顶分类
  onPageScroll: function (e) {
    if(e.scrollTop>=this.data.menuTop-this.data.titleHead){
      if(!this.data.fixedMenu){
        this.setData({
          fixedMenu:true
        })
      }
    }else{
      if(this.data.fixedMenu){
        this.setData({
          fixedMenu:false
        })
      }
    }
    console.log('fixedMenu', this.data.fixedMenu)
  },
  goreBack(e){
    wx.navigateBack({
      delta: 1,
    })
  },
  // 获取优惠券列表数据
  getListData() {
    let params = {
      page: this.data.page,
      rows: this.data.rows,
      couponTypeId:this.data.typeId,
      searchParam:wx.getStorageSync('addrCode').provinceCode
    }
    app.reqFun.requestForm('POST',couponApi.couponCenterPage, params, (response) => {
      if(response.data){
        const res=response.data
        if (res.success == 1) {
          const records = res.data.records.map(v=>{
            const data=this.formatCouponData(v)
            return {...v,...data}
          })
          this.setData({
            listData: this.data.page === 1 ? records : this.data.listData.concat(records),
            nomoreData: records.length < this.data.rows
          })
        }
      }
    })
  },
  // 格式化优惠券数据
  formatCouponData(data){
    // amount ：优惠券额度
    // minPointDisPlay ：门槛
    // name：名称
    // platform：使用平台
    // 开始结束时间：useStartTime  useEndTime
    // receiveStatus：是否可领用    (为空 可领取，true - 已领取  false 不能领取)
    // continueReceiveStatus：是否可继续领用  false-不能继续   true 能继续
    // saleOutStatus：true  领空了    false 可领取

    let couponStatus= 0 // 领取操作状态：0 未领取， 1 已领取，2 继续领取， 3 已抢光
    if(data.receiveStatus){
      couponStatus=1 // 已领取
      if(data.continueReceiveStatus){
        couponStatus=2 // 可继续领取
      }
    }
    if(data.saleOutStatus){
      couponStatus=3 // 已抢光
    }

    // 优惠券类型
    let couponType=0 // 1 送装， 2全品， 2 限品  (v.type 1 送装 ， 2 全品 ， 3 限品类)            
    if(data.useType && data.useType.value==1){ // 1 送装券 ， 0 商品
      couponType = 1
    }else{
      if(data.useProductType && data.useProductType.value===1){
        // 限品类
        couponType=3
      }else{
        // 全品类
        couponType=2
      }
    }
    return {
      discountType: (data.discountType && data.discountType.value) || 0 , // 1 打折，0 满减
      couponType, 
      couponStatus  // 状态：0 未领取， 1 已领取，2 继续领取， 3 已抢光
    }
  },
  // 获取优惠券类型统计数据
  getCouponTypeList(){
    let params = {
      sort:'sort',
      order:'asc',
      page: 1,
      rows: 20
    }
    app.reqFun.requestForm('POST', couponApi.quryCouponType, params, (response) => {
      if(response.data){
        const res=response.data
        let typeList=[{id:0,name:'为您精选'}]
        if(res.success===1 && res.data && res.data.records){
          res.data.records.forEach(v => {
            typeList.push({id:v.id,name:v.name})
          });
        }
        this.setData({
          typeData: typeList
        })
      }
    })
  },
  // 切换优惠券类型
  tapTypeSelect(e) {
    this.setData({
      typeId: e.currentTarget.dataset.id,
      page:1,
      nomoreData:false
    })
    this.getListData()
  },
  // 优惠券操作
  tapCouponOperate(e){
    let that = this
    app.getLogin((re)=>{
      if(re){
        const coupon=e.currentTarget.dataset.item
        const couponId=coupon.id
        const status=coupon.couponStatus  // 领取状态：0 未领取（领取优惠券）， 1 已领取 (去使用)，2 继续领取 （领取）， 3 已抢光 （receiveStatus :true 去使用，false 去看看）
        const type=coupon.couponType // 1 全品类，2 限品类 ，3 送装
        const userType = coupon.userType // 用户类型 0: 全部 1: 新用户 2: 需验证用户
        if(status===0){
          // 领取优惠券
          if (userType == 2) {
            that.setData({ userTypeDlg: true })
            wx.setStorageSync('couponId', couponId)
            wx.setStorageSync('receivePage', 2)
          } else {
            that.reciveCoupon(couponId)
          }
          return
        }
        if(coupon.receiveStatus){
          if(coupon.platform=='store'){
            // 若为门店使用的，则查看优惠券详情
            wx.navigateTo({
              url: '/packagMy/pages/coupon/couponDetail/couponDetail?couponId='+couponId
            })
          }else{
            // 进入商品列表
            wx.navigateTo({
              url: '/packageShop/pages/shopSearch/shopSearch?couponId='+couponId+"&from=coupon"
            })
          }
          /*
          // 已领取优惠券则去使用
          wx.navigateTo({
            url: '/packagMy/pages/coupon/myCoupon/myCoupon'
          })*/
          return 
        }
        if(status==3){
          //优惠券已抢光>去看看
          if(coupon.platform !='store'){
            //非门店使用的优惠券进入商品列表
            wx.navigateTo({
              url: '/packageShop/pages/shopSearch/shopSearch?couponId='+couponId+"&from=coupon"
            })
          }
        }
      } else {
        if (wx.getUserProfile) {
          app.getUserProfile(function(){
            that.setData({
              getPhoneNumberData:{
                isShowGetPhoneNumber:true
              }
            })
          })
        } else {
          if(!wx.getStorageSync('loginMsg').bindingPhone){
            that.setData({
              getPhoneNumberData:{
                isShowGetPhoneNumber:true
              }
            })
          }
        }
        // that.setData({
        //   isShowGetUserInfo: true
        // })
      }
    })
  },
  // 继续领取优惠券
  tapContiueReceive(e){
    let that = this
    const coupon=e.currentTarget.dataset.item
    const userType = coupon.userType
    const couponId = coupon.id
    if (userType == 2) {
      that.setData({ userTypeDlg: true })
      wx.setStorageSync('couponId', couponId)
      wx.setStorageSync('receivePage', 2)
    } else {
      that.reciveCoupon(couponId)
    }
  },
  // 领取优惠券
  reciveCoupon(couponId){
    const params={
      couponId,
      receivePlatform: 'mini',//领券端口 （pc商城： pc，小程序商城：mini, 门店：store）
      receivePage:2 // 领取页面：0 商品详情页，1 购物车，2 领券中心
    }
    app.reqFun.requestJson('POST',  couponApi.receiveCoupon, params, (response) => {
      const res=response.data
      if (res.success == 1) {
        wx.showToast({
          title:'领取成功',
          icon: 'none',   // 图标类型，默认success
          duration: 1500   // 提示窗停留时间，默认1500ms
        })
        if(res.data && res.data.id){
          // 刷新当前领取的优惠状态
          const  list=this.data.listData
          const index=this.data.listData.findIndex(v=>v.id==couponId)
          const data=this.formatCouponData(res.data)
          list[index]= {...res.data,...data}
          this.setData({
            listData : list
          })
        }
      }else{
        wx.showToast({
          title:res.msg || '领取失败',
          icon: 'none',   // 图标类型，默认success
          duration: 1500   // 提示窗停留时间，默认1500ms
        })
      }
    })
  },
  verinfoMat() {
    this.setData({ userTypeDlg: false })
    wx.navigateTo({
      url: '/packagBuy/pages/marketing/verifyCoupon/verInformation/verInformation'
    })
  },
  onClose() {
    this.setData({ userTypeDlg: false });
  },
  //登录-注册
  bindGetUserInfo: function (e) {
    app.getUserInfo()
    this.setData({
      showSetting: false,
      isShowGetUserInfo: false
    })
  },
  //登录弹窗关闭回调
  onCloseShowGetUserInfo() {
    this.setData({
      showSetting: false,
      isShowGetUserInfo: false
    })
  },

})